Conclusions
Let's sum up what we’ve learned in this course.
Before we conclude, we’d like to congratulate you for completing such a challenging course!
In this course, we learned system design activity from the lens of basic building blocks—the fundamental subsystems that combine to make a bigger system. Doing so enabled us to focus on the specific business use cases instead of repeating the recurring concepts.
We carefully selected our design problems from many different domains, and we've made an explicit effort to incorporate some unique aspects or issues of system design activity in each of them.
Unique Aspects of Each Design Problem
Design Problem | Unique Aspect of Design |
YouTube | Building custom data stores like Vitess and BigTable to meet scalability needs |
Quora | Vertical sharding of MySQL database to meet the scalability requirements |
Google Maps | The use of segmentation of a map to meet scalability needs and achieve high performance |
Yelp | Usage of Quadtrees for speedy access to spatial data |
Uber | Improved payment service to ensure fraud detection, and matching the driver and rider on maps |
The use of client-side load balancers for multiple services that had thousands of instances in order to reduce latency | |
Newsfeed | A recommendation system to ensure ranking and feed suggestions |
A perfect example of how different building blocks combine to build a scalable and performant system | |
TinyURL | Encoding IDs in the base-58 system for generating unique short URLs |
Web crawler | Detection, identification, and resolution of Web crawler traps |
Message management for offline users | |
Typeahead | The usage of an efficient trie data structure to provide suggestions |
Google Docs | Concurrency management for simultaneous writes, using techniques like operational transformation (OT) and Conflict-free Replicated Data Type (CRDT) |
At this point, we’ve built our system design toolbox, and we can now pick the right tools for the job at hand. We hope that this course has helped you gain enough knowledge to design new problems and solutions using our building blocks. Let’s put our system design knowledge to work and build great systems!
Finally, we would like to thank you for taking the time to complete this course! We hope that it was a great experience for you. Please feel free to drop us an email or leave a comment on our community forum about any suggestions that you may have.
— Team Educative